import 'package:pigeon/pigeon.dart';

/// iOS PTP 连接 API
///
/// 定义 iOS 端相机连接相关的 HostApi
@ConfigurePigeon(PigeonOptions(
  dartOut: 'lib/src/pigeon/ios_ptp_connection_api.g.dart',
  swiftOut: 'ios/Classes/IosPtpConnectionApi.swift',
  swiftOptions: SwiftOptions(),
  dartPackageName: 'ptp_wrapper',
))
@HostApi()
abstract class IosPtpConnectionApi {
  /// 初始化
  @async
  void initialize();

  /// 建立连接
  @async
  void connect();

  /// 断开连接
  @async
  void disconnect();

  /// 判断当前是否已连接
  @async
  bool isConnected();

  /// 释放资源
  @async
  void dispose();
}

/// FlutterApi - 连接状态回调
///
/// iOS 端向 Dart 端发送连接事件
@FlutterApi()
abstract class IosPtpConnectionFlutterApi {
  
  /// 连接状态变化回调——参数改为 code、errorMessage
  void onConnectionStateChanged(int code, String? errorMessage);

  /// 相机启动（是否找到有效相机）
  void onCameraStarted(bool hasCamera);

  /// 新对象加入
  void onObjectAdded(int handle, int format);

  /// 对象信息变化
  void onObjectInfoChanged(int handle, int property, int value);

  /// 对象被移除
  void onObjectRemoved(int handle);

  /// 存储被移除
  void onStoreRemoved(int storeId);

  /// 相机停止
  void onCameraStopped();

  /// PTP 错误
  void onPtpError(String message);
}

